package com.obelisco.vista.componentes;

import java.util.Vector;

import nextapp.echo2.app.Button;
import nextapp.echo2.app.Component;
import nextapp.echo2.app.Row;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;

import com.obelisco.vista.controles.TextField;

public class TextFieldCatalogo extends Row {

	private TextField txtCodigo;
	private Button 	btnVerCatalogo;
	private Catalogo  catalogo;
	private int ancho = 100;

	private Vector<TextFieldCatalogoListener> listeners = new Vector<TextFieldCatalogoListener>();

	private CatalogoListener manejarSeleccionCatalogo = new CatalogoListener() {

		public void onSeleccionar(Object objeto) {
			// TODO Auto-generated method stub
			distribuirEventoSeleccion(objeto);
		}

	};
	
	
	public TextFieldCatalogo() {
		super();		
		initComponents();
	}
	
	public TextFieldCatalogo(int ancho) {
		super();		
		this.ancho = ancho;
		initComponents();
	}
	
	private void initComponents(){
		   
	   ActionListener btnVerCatalogorListener = new ActionListener(){
			public void actionPerformed(ActionEvent event) {
				if (catalogo != null ) {
					catalogo.setModal(true);
					catalogo.mostrarDialogo();
				}
			}			
		}; 

		txtCodigo = new TextField(ancho);
		txtCodigo.setEnabled(false);
		this.add(txtCodigo);

		btnVerCatalogo = new Button();
		btnVerCatalogo.setStyleName("Obelisco.Boton.Catalogo");
		btnVerCatalogo.addActionListener(btnVerCatalogorListener);
		btnVerCatalogo.setToolTipText("Ver Catalogo");

		this.add(btnVerCatalogo);			
	}
	
	public void setText(String valor) {
		this.txtCodigo.setText(valor);
	}
	
	public String getText() {
		return this.txtCodigo.getText();
	}
	
	public void setEnabled(boolean enabled) {
		this.txtCodigo.setEnabled(enabled);
		this.btnVerCatalogo.setEnabled(enabled);
	}
	
	public void distribuirEventoSeleccion(Object o) {
		for (TextFieldCatalogoListener l : this.listeners) {
			l.onSeleccionar(o);
		}
	}
	
	public void addCatalogoListener(TextFieldCatalogoListener listener) {
		listeners.add(listener);
	}

	public void removeCatalogoListener(TextFieldCatalogoListener listener) {
		listeners.remove(listener);
	}

	public Catalogo getCatalogo() {
		return catalogo;
	}

	public void setCatalogo(Catalogo catalogo) {
		this.catalogo = catalogo;
		this.catalogo.addCatalogoListener(manejarSeleccionCatalogo);
	}

	public Button getBtnVerCatalogo() {
		return btnVerCatalogo;
	}

	public void setBtnVerCatalogo(Button btnVerCatalogo) {
		this.btnVerCatalogo = btnVerCatalogo;
	}	
}
